第 3 小节:开源项目的常见治理架构

3 种常见的开源项目治理架构

BDFL: BDFL 是英文「Benevolent Dictator For Life」的缩写。中文翻译为「仁慈的终身独裁者」。在此架构下,有一个人(通常是项目的最初的作者,或者是社区选举的一个人)拥有项目中所有最后的决定。较小的项目可能默认就是 BDFL 结构,因为此类项目一般就是一到两位维护者。若是公司组织的项目也极有可能会采用 BDFL 结构,以便掌握项目的决策权。
例如:Python 就是一个非常经典的 BDFL 例子。在此架构下,「独裁者」如何进行权力的交接?如果想扩展阅读也可以关注下 Python 之父 Guido van Rossum 的退位邮件。[python-committers] Transfer of power

Meritocracy(精英制): 在精英制下,活跃的项目贡献者(他们用行动证明自己是「精英」)给出一个正式的决策作用,决定通常会基于纯粹的投票一致性。精英制的概念首次由 Apache Foundation 提出;所有的 Apache 项目都是基于精英制的。贡献者只能代表自己是独立的个体,不可以是公司。
(注: 术语「精英制」对于一些社群可能具有消极的含义,其拥有较复杂的社会和政治的历史。)

Liberal Contribution(自由贡献): 在自由贡献的模式下,做最多工作的人通常被认为是最具影响力的,但是是基于当前的工作,而不是历史的共享(什么是“历史的共享”,这块说的不清楚。)。项目的重大决策是基于寻求共识的过程(对不同的声音要讨论)而不是纯粹的投票,尽可能的努力的去囊括多的社区观点。较流行的使用自由贡献模式的项目有 Node.js 和 Rust。

应该选择哪一种模式了呢?每个模式都有优点,也有缺点。如果是非公司开源项目,可以在开始的时候简单定义基本的流程。例如,你可以将某些预期的行为定义清楚,贡献的流程是如何的,或者项目是如何启动的,等等。如果是公司开源的项目,在启动之前,应该做一些讨论,如公司将会如何维护项目,随着项目的发展,决策该如何定夺。可以公开的解释一下,开源之后,公司是否还继续参与贡献,还是完全由社区决定,等等。没有最优的答案,一切在于出自内心的选择。

Node.js 的自由贡献规则

1.Node.js 核心库:Node.js 核心代码库在 https://github.com/nodejs/node。你可以尝试通过提 PR 与 Issue 的形式为核心代码库做贡献。

2.Node.js 工作组:工作组与核心代码并非直接关联,而是专注在其周边的一些具体任务,比如站点工作组负责 Node.js 官网事宜,构建工作组负责 Node.js 在各个平台上的编译构建,Benchmark 工作组关注 Node.js 的性能相关问题。

3.Node.js 生态圈:即使你对核心库与工作组的东西不感兴趣,也可以通过参与生态建设的方式做出贡献,例如参加 Node.js 的布道,出席社区聚会等等。

BDFL 治理模型

  • 总览

  1. 项目由仁慈的独裁者领导,并由社区管理。也就是说,社区积极地为项目的日常维护做出了贡献,但是仁慈的独裁者划定了总体战略方针。如有分歧,则保留最后决定权。解决社区内部的争端并确保项目能够以协调的方式进行,这是仁慈的独裁者的工作。反过来,通过积极的参与和贡献来指导仁慈的独裁者的决定是社区的工作。

    • 角色

  2. 仁慈的独裁者:仁慈的独裁者或项目负责人是自任命的。但是,由于社区始终具有分叉的能力,因此此人对社区完全负责。项目负责人的角色是一个困难的角色:他们确定了项目的战略目标,并将这些目标明确地传达给社区。他们还必须了解整个社区,并努力满足尽可能多的冲突需求,同时确保项目能够长期生存。
  3. 提交者:提交者是对项目做出了一些宝贵贡献的贡献者,现在都依赖于将代码直接写到存储库中并筛选其他贡献者。通常,提交者将专注于项目的特定方面,并将带来一定程度的专业知识和理解,从而赢得社区和项目领导者的尊重。
  4. 贡献者:任何人都可以成为贡献者。没有期望对项目的承诺,没有特定的技能要求,也没有选择过程。要成为贡献者,社区成员只需执行一项或多项对项目有益的行动。

    • 社区治理方向

      当项目的团队还比较小的时候,而且用户的社区也比较小,这时仁慈的独裁者会按照传统的自上而下的方式来做出所有的决策。然而,随着社区的增长,这会变得越来越困难,很少有人能够完全理解所要解决问题的所有细节,因此,他们可能会对在不怎么专业的领域所做出的决定不是太有把握。随着项目规模和范围的扩大,人们对于不能有十足把握的模块也会增长,那么作为项目的带头人,就无法做到面面俱到。基于如上原因,一个颇为高效率的独裁者会慢慢转变为协调者,或者叫做仲裁者,他们通常情况下,不会在辩论当中站队,Linux Torvalds曾经说过,“我宁愿看到的场面是有 15 个人为一个问题而争执的面红耳赤,而不愿意看到 15 个人分成两支队伍,每支队伍都只和自己观点相近的人说话。

三种治理架构对应的模板,供参考:

  1. 需补充以下三种案例的模版或规则
  • BDFL 模式模版
  • 精英模式模版
  • Node.js 的自由贡献规则

参考

本部分内容贡献者

alimoyuORHBaiYunITtaotierenzeroTwozeroTwo